﻿using System;

namespace HART.Connectors
{
    /// <summary>
    /// 通用接口，用于实现与从设备的连接。
    /// </summary>
    public interface IConnector
    {
        /// <summary>
        /// 端口是否已打开。
        /// </summary>
        bool IsConnected { get; }

        /// <summary>
        /// 当从设备生成新消息时的通知事件。
        /// </summary>
        event Action DataReceived;

        /// <summary>
        /// 打开连接。
        /// </summary>
        void Connect();

        /// <summary>
        /// 关闭连接。
        /// </summary>
        void Disconnect();

        /// <summary>
        /// 发送请求。
        /// </summary>
        /// <param name="buffer">要发送的数据数组。</param>
        void Request(byte[] buffer);

        /// <summary>
        /// 获取响应。
        /// </summary>
        /// <returns>接收到的数据数组。</returns>
        byte[] Response();
    }
}
